Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / backend / plugin_wasm_bundle.py

Displaying Raw • Download


meshchatx/src/backend/plugin_wasm_bundle.py fa46dc4ce9ab50cbe66a7a9e4b3bca0140102345 (fa46dc4c) Text, 9.41 KB

T8b949e# SPDX-License-Identifier: 0BSD

T8b949e"""Single-file WASM plugin bundles with embedded manifest/files/signature."""

Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations

Tff7b72import T7ee787json
Tff7b72import T7ee787os
Tff7b72from T7ee787dataclasses Tff7b72import Te6edf3dataclassTb4b4b4, Te6edf3field
Tff7b72from T7ee787typing Tff7b72import Te6edf3Any

Te6edf3WASM_MAGIC Tff7b72= Ta5d6ffbTa5d6ff"Tffea00\x00Ta5d6ffasmTa5d6ff"
Te6edf3WASM_VERSION Tff7b72= Ta5d6ffbTa5d6ff"Tffea00\x01Tffea00\x00Tffea00\x00Tffea00\x00Ta5d6ff"
Te6edf3WASM_SECTION_CUSTOM Tff7b72= T79c0ff0

Te6edf3SECTION_PLUGIN Tff7b72= Ta5d6ff"Ta5d6ffmeshchatx.pluginTa5d6ff"
Te6edf3SECTION_FILES Tff7b72= Ta5d6ff"Ta5d6ffmeshchatx.filesTa5d6ff"
Te6edf3SECTION_SIGNATURE Tff7b72= Ta5d6ff"Ta5d6ffmeshchatx.signatureTa5d6ff"


Tff7b72def Td2a8ffis_wasm_bytesTb4b4b4(Te6edf3dataTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Tffa657boolTb4b4b4:
Tff7b72return Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72>Tff7b72= T79c0ff4 Tff7b72and Te6edf3dataTb4b4b4[Tb4b4b4:T79c0ff4Tb4b4b4] Tff7b72== Te6edf3WASM_MAGIC


Te6edf3MAX_WASM_BUNDLE_BYTES Tff7b72= T79c0ff32 Tff7b72* T79c0ff1024 Tff7b72* T79c0ff1024
Te6edf3MAX_WASM_EMBEDDED_FILE Tff7b72= T79c0ff8 Tff7b72* T79c0ff1024 Tff7b72* T79c0ff1024
Te6edf3MAX_WASM_EMBEDDED_KEYS Tff7b72= T79c0ff64


Tf0883e@dataclass
Tff7b72class T56d364WasmBundleTb4b4b4:
Te6edf3manifestTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4] Tff7b72= Te6edf3fieldTb4b4b4(Te6edf3default_factoryTff7b72=Tffa657dictTb4b4b4)
Te6edf3filesTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Tffa657strTb4b4b4] Tff7b72= Te6edf3fieldTb4b4b4(Te6edf3default_factoryTff7b72=Tffa657dictTb4b4b4)
Te6edf3wasm_binaryTb4b4b4: Tffa657bytes Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ff"
Te6edf3signatureTb4b4b4: Tffa657bytes Tff7b72= Ta5d6ffbTa5d6ff"Ta5d6ff"


Tff7b72def Td2a8ffread_uleb32Tb4b4b4(Te6edf3dataTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Tffa657tupleTb4b4b4[Tffa657intTb4b4b4, Tffa657intTb4b4b4]Tb4b4b4:
Te6edf3result Tff7b72= T79c0ff0
Te6edf3shift Tff7b72= T79c0ff0
Tff7b72for Te6edf3indexTb4b4b4, Te6edf3byte Tff7b72in Tffa657enumerateTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3shift Tff7b72>Tff7b72= T79c0ff35Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffinvalid uleb32Ta5d6ff"Tb4b4b4)
Te6edf3result Tff7b72|Tff7b72= Tb4b4b4(Te6edf3byte Tff7b72& T79c0ff0x7FTb4b4b4) Tff7b72<< Te6edf3shift
Tff7b72if Te6edf3byte Tff7b72& T79c0ff0x80 Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72return Te6edf3resultTb4b4b4, Te6edf3index Tff7b72+ T79c0ff1
Te6edf3shift Tff7b72+Tff7b72= T79c0ff7
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6fftruncated uleb32Ta5d6ff"Tb4b4b4)


Tff7b72def Td2a8ffencode_uleb32Tb4b4b4(Te6edf3valueTb4b4b4: Tffa657intTb4b4b4) Tff7b72-Tff7b72> Tffa657bytesTb4b4b4:
Te6edf3out Tff7b72= Tffa657bytearrayTb4b4b4(Tb4b4b4)
Tff7b72while Tff7b72TrueTb4b4b4:
Te6edf3byte Tff7b72= Te6edf3value Tff7b72& T79c0ff0x7F
Te6edf3value Tff7b72>>Tff7b72= T79c0ff7
Tff7b72if Te6edf3value Tff7b72!= T79c0ff0Tb4b4b4:
Te6edf3byte Tff7b72|Tff7b72= T79c0ff0x80
Te6edf3outTff7b72.Td2a8ffappendTb4b4b4(Te6edf3byteTb4b4b4)
Tff7b72if Te6edf3value Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72break
Tff7b72return Tffa657bytesTb4b4b4(Te6edf3outTb4b4b4)


Tff7b72def Td2a8ffread_byte_vectorTb4b4b4(Te6edf3dataTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Tffa657tupleTb4b4b4[Tffa657bytesTb4b4b4, Tffa657bytesTb4b4b4]Tb4b4b4:
Te6edf3sizeTb4b4b4, Te6edf3consumed Tff7b72= Te6edf3read_uleb32Tb4b4b4(Te6edf3dataTb4b4b4)
Te6edf3end Tff7b72= Te6edf3consumed Tff7b72+ Te6edf3size
Tff7b72if Te6edf3end Tff7b72> Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6fftruncated byte vectorTa5d6ff"Tb4b4b4)
Tff7b72return Te6edf3dataTb4b4b4[Te6edf3consumedTb4b4b4:Te6edf3endTb4b4b4]Tb4b4b4, Te6edf3dataTb4b4b4[Te6edf3endTb4b4b4:Tb4b4b4]


Tff7b72def Td2a8ffencode_byte_vectorTb4b4b4(Te6edf3dataTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Tffa657bytesTb4b4b4:
Tff7b72return Te6edf3encode_uleb32Tb4b4b4(Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4) Tff7b72+ Te6edf3data


Tff7b72def Td2a8ffappend_custom_sectionTb4b4b4(Te6edf3wasmTb4b4b4: Tffa657bytesTb4b4b4, Te6edf3nameTb4b4b4: Tffa657strTb4b4b4, Te6edf3dataTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Tffa657bytesTb4b4b4:
Tff7b72if Tff7b72not Te6edf3nameTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffcustom section name is requiredTa5d6ff"Tb4b4b4)
Te6edf3payload Tff7b72= Te6edf3encode_byte_vectorTb4b4b4(Te6edf3nameTff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4) Tff7b72+ Te6edf3encode_byte_vectorTb4b4b4(Te6edf3dataTb4b4b4)
Te6edf3section Tff7b72= Tffa657bytesTb4b4b4(Tb4b4b4[Te6edf3WASM_SECTION_CUSTOMTb4b4b4]Tb4b4b4) Tff7b72+ Te6edf3encode_uleb32Tb4b4b4(Tffa657lenTb4b4b4(Te6edf3payloadTb4b4b4)Tb4b4b4) Tff7b72+ Te6edf3payload
Tff7b72return Te6edf3wasm Tff7b72+ Te6edf3section


Tff7b72def Td2a8ffparse_wasm_bundleTb4b4b4(Te6edf3dataTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Te6edf3WasmBundleTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72< T79c0ff8 Tff7b72or Te6edf3dataTb4b4b4[Tb4b4b4:T79c0ff4Tb4b4b4] Tff7b72!= Te6edf3WASM_MAGICTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffinvalid wasm moduleTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3dataTb4b4b4[T79c0ff4Tb4b4b4:T79c0ff8Tb4b4b4] Tff7b72!= Te6edf3WASM_VERSIONTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffunsupported wasm versionTa5d6ff"Tb4b4b4)
Te6edf3bundle Tff7b72= Te6edf3WasmBundleTb4b4b4(Te6edf3wasm_binaryTff7b72=Te6edf3dataTb4b4b4, Te6edf3filesTff7b72=Tb4b4b4{Tb4b4b4}Tb4b4b4)
Te6edf3offset Tff7b72= T79c0ff8
Tff7b72while Te6edf3offset Tff7b72< Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4:
Te6edf3section_id Tff7b72= Te6edf3dataTb4b4b4[Te6edf3offsetTb4b4b4]
Te6edf3offset Tff7b72+Tff7b72= T79c0ff1
Te6edf3sizeTb4b4b4, Te6edf3n Tff7b72= Te6edf3read_uleb32Tb4b4b4(Te6edf3dataTb4b4b4[Te6edf3offsetTb4b4b4:Tb4b4b4]Tb4b4b4)
Te6edf3offset Tff7b72+Tff7b72= Te6edf3n
Tff7b72if Te6edf3size Tff7b72> Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72- Te6edf3offsetTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6fftruncated wasm sectionTa5d6ff"Tb4b4b4)
Te6edf3payload Tff7b72= Te6edf3dataTb4b4b4[Te6edf3offset Tb4b4b4: Te6edf3offset Tff7b72+ Te6edf3sizeTb4b4b4]
Te6edf3offset Tff7b72+Tff7b72= Te6edf3size
Tff7b72if Te6edf3section_id Tff7b72!= Te6edf3WASM_SECTION_CUSTOMTb4b4b4:
Tff7b72continue
Tff7b72tryTb4b4b4:
Te6edf3name_bytesTb4b4b4, Te6edf3rest Tff7b72= Te6edf3read_byte_vectorTb4b4b4(Te6edf3payloadTb4b4b4)
Te6edf3contentTb4b4b4, Te6edf3_ Tff7b72= Te6edf3read_byte_vectorTb4b4b4(Te6edf3restTb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Tff7b72continue
Te6edf3name Tff7b72= Te6edf3name_bytesTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4, Te6edf3errorsTff7b72=Ta5d6ff"Ta5d6ffreplaceTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3name Tff7b72== Te6edf3SECTION_PLUGINTb4b4b4:
Te6edf3manifest Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3contentTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3manifestTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffembedded manifest must be an objectTa5d6ff"Tb4b4b4)
Te6edf3bundleTff7b72.Td2a8ffmanifest Tff7b72= Te6edf3manifest
Tff7b72elif Te6edf3name Tff7b72== Te6edf3SECTION_FILESTb4b4b4:
Te6edf3files Tff7b72= Te6edf3jsonTff7b72.Td2a8ffloadsTb4b4b4(Te6edf3contentTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3filesTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffembedded files must be an objectTa5d6ff"Tb4b4b4)
Tff7b72for Te6edf3keyTb4b4b4, Te6edf3value Tff7b72in Te6edf3filesTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3keyTb4b4b4, Tffa657strTb4b4b4) Tff7b72and Tffa657isinstanceTb4b4b4(Te6edf3valueTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Te6edf3bundleTff7b72.Td2a8fffilesTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3value
Tff7b72elif Te6edf3name Tff7b72== Te6edf3SECTION_SIGNATURETb4b4b4:
Te6edf3bundleTff7b72.Td2a8ffsignature Tff7b72= Tffa657bytesTb4b4b4(Te6edf3contentTb4b4b4)
Tff7b72return Te6edf3bundle


Tff7b72def Td2a8ffwasm_payload_without_signatureTb4b4b4(Te6edf3dataTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Tffa657bytesTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72< T79c0ff8 Tff7b72or Te6edf3dataTb4b4b4[Tb4b4b4:T79c0ff4Tb4b4b4] Tff7b72!= Te6edf3WASM_MAGICTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffinvalid wasm moduleTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3dataTb4b4b4[T79c0ff4Tb4b4b4:T79c0ff8Tb4b4b4] Tff7b72!= Te6edf3WASM_VERSIONTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffunsupported wasm versionTa5d6ff"Tb4b4b4)
Te6edf3out Tff7b72= Tffa657bytearrayTb4b4b4(Te6edf3dataTb4b4b4[Tb4b4b4:T79c0ff8Tb4b4b4]Tb4b4b4)
Te6edf3offset Tff7b72= T79c0ff8
Tff7b72while Te6edf3offset Tff7b72< Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4:
Te6edf3section_start Tff7b72= Te6edf3offset
Te6edf3section_id Tff7b72= Te6edf3dataTb4b4b4[Te6edf3offsetTb4b4b4]
Te6edf3offset Tff7b72+Tff7b72= T79c0ff1
Te6edf3sizeTb4b4b4, Te6edf3n Tff7b72= Te6edf3read_uleb32Tb4b4b4(Te6edf3dataTb4b4b4[Te6edf3offsetTb4b4b4:Tb4b4b4]Tb4b4b4)
Te6edf3offset Tff7b72+Tff7b72= Te6edf3n
Tff7b72if Te6edf3size Tff7b72> Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72- Te6edf3offsetTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6fftruncated wasm sectionTa5d6ff"Tb4b4b4)
Te6edf3payload Tff7b72= Te6edf3dataTb4b4b4[Te6edf3offset Tb4b4b4: Te6edf3offset Tff7b72+ Te6edf3sizeTb4b4b4]
Te6edf3offset Tff7b72+Tff7b72= Te6edf3size
Tff7b72if Te6edf3section_id Tff7b72!= Te6edf3WASM_SECTION_CUSTOMTb4b4b4:
Te6edf3outTff7b72.Td2a8ffextendTb4b4b4(Te6edf3dataTb4b4b4[Te6edf3section_startTb4b4b4:Te6edf3offsetTb4b4b4]Tb4b4b4)
Tff7b72continue
Tff7b72tryTb4b4b4:
Te6edf3name_bytesTb4b4b4, Te6edf3_rest Tff7b72= Te6edf3read_byte_vectorTb4b4b4(Te6edf3payloadTb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Te6edf3outTff7b72.Td2a8ffextendTb4b4b4(Te6edf3dataTb4b4b4[Te6edf3section_startTb4b4b4:Te6edf3offsetTb4b4b4]Tb4b4b4)
Tff7b72continue
Te6edf3name Tff7b72= Te6edf3name_bytesTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4, Te6edf3errorsTff7b72=Ta5d6ff"Ta5d6ffreplaceTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3name Tff7b72== Te6edf3SECTION_SIGNATURETb4b4b4:
Tff7b72continue
Te6edf3outTff7b72.Td2a8ffextendTb4b4b4(Te6edf3dataTb4b4b4[Te6edf3section_startTb4b4b4:Te6edf3offsetTb4b4b4]Tb4b4b4)
Tff7b72return Tffa657bytesTb4b4b4(Te6edf3outTb4b4b4)


Tff7b72def Td2a8ffappend_wasm_signatureTb4b4b4(Te6edf3wasmTb4b4b4: Tffa657bytesTb4b4b4, Te6edf3signatureTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Tffa657bytesTb4b4b4:
Tff7b72if Tff7b72not Te6edf3signatureTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffsignature is requiredTa5d6ff"Tb4b4b4)
Te6edf3payload Tff7b72= Te6edf3wasm_payload_without_signatureTb4b4b4(Te6edf3wasmTb4b4b4)
Tff7b72return Te6edf3append_custom_sectionTb4b4b4(Te6edf3payloadTb4b4b4, Te6edf3SECTION_SIGNATURETb4b4b4, Te6edf3signatureTb4b4b4)


Tff7b72def Td2a8ffvalidate_embedded_pathTb4b4b4(Te6edf3nameTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3clean Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffnormpathTb4b4b4(Te6edf3nameTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)
Tff7b72if Te6edf3clean Tff7b72in Tb4b4b4{Ta5d6ff"Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4} Tff7b72or Te6edf3cleanTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ff..Ta5d6ff"Tb4b4b4) Tff7b72or Te6edf3cleanTff7b72.Td2a8ffstartswithTb4b4b4(Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffinvalid embedded path Tffd700{Te6edf3nameTffd700!r}Ta5d6ff"Tb4b4b4)


Tff7b72def Td2a8ffvalidate_embedded_bundleTb4b4b4(Te6edf3bundleTb4b4b4: Te6edf3WasmBundleTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3bundleTff7b72.Td2a8ffwasm_binaryTb4b4b4) Tff7b72> Te6edf3MAX_WASM_BUNDLE_BYTESTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffwasm bundle is too largeTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3bundleTff7b72.Td2a8fffilesTb4b4b4) Tff7b72> Te6edf3MAX_WASM_EMBEDDED_KEYSTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6fftoo many embedded filesTa5d6ff"Tb4b4b4)
Tff7b72for Te6edf3nameTb4b4b4, Te6edf3content Tff7b72in Te6edf3bundleTff7b72.Td2a8fffilesTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3validate_embedded_pathTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3contentTff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4) Tff7b72> Te6edf3MAX_WASM_EMBEDDED_FILETb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffembedded file Tffd700{Te6edf3nameTffd700!r}Ta5d6ff too largeTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8ffbundle_wasmTb4b4b4(
Te6edf3wasmTb4b4b4: Tffa657bytesTb4b4b4,
Te6edf3manifestTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Te6edf3AnyTb4b4b4]Tb4b4b4,
Te6edf3filesTb4b4b4: Tffa657dictTb4b4b4[Tffa657strTb4b4b4, Tffa657strTb4b4b4] Tff7b72| Tff7b72None Tff7b72= Tff7b72NoneTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Tffa657bytesTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3wasmTb4b4b4) Tff7b72< T79c0ff8 Tff7b72or Te6edf3wasmTb4b4b4[Tb4b4b4:T79c0ff4Tb4b4b4] Tff7b72!= Te6edf3WASM_MAGICTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffinvalid wasm moduleTa5d6ff"Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3wasmTb4b4b4) Tff7b72> Te6edf3MAX_WASM_BUNDLE_BYTESTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffwasm module too largeTa5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3manifestTb4b4b4, Tffa657dictTb4b4b4) Tff7b72or Tff7b72not Tffa657strTb4b4b4(Te6edf3manifestTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffidTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffmanifest id is requiredTa5d6ff"Tb4b4b4)
Te6edf3files Tff7b72= Te6edf3files Tff7b72or Tb4b4b4{Tb4b4b4}
Tff7b72if Tffa657lenTb4b4b4(Te6edf3filesTb4b4b4) Tff7b72> Te6edf3MAX_WASM_EMBEDDED_KEYSTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6fftoo many embedded filesTa5d6ff"Tb4b4b4)
Te6edf3out Tff7b72= Tffa657bytesTb4b4b4(Te6edf3wasmTb4b4b4)
Te6edf3out Tff7b72= Te6edf3append_custom_sectionTb4b4b4(
Te6edf3outTb4b4b4,
Te6edf3SECTION_PLUGINTb4b4b4,
Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3manifestTb4b4b4, Te6edf3separatorsTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ff,Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72if Te6edf3filesTb4b4b4:
Tff7b72for Te6edf3nameTb4b4b4, Te6edf3content Tff7b72in Te6edf3filesTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3validate_embedded_pathTb4b4b4(Te6edf3nameTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3contentTff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4) Tff7b72> Te6edf3MAX_WASM_EMBEDDED_FILETb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffembedded file Tffd700{Te6edf3nameTffd700!r}Ta5d6ff too largeTa5d6ff"Tb4b4b4)
Te6edf3out Tff7b72= Te6edf3append_custom_sectionTb4b4b4(
Te6edf3outTb4b4b4,
Te6edf3SECTION_FILESTb4b4b4,
Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3filesTb4b4b4, Te6edf3separatorsTff7b72=Tb4b4b4(Ta5d6ff"Ta5d6ff,Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3outTb4b4b4) Tff7b72> Te6edf3MAX_WASM_BUNDLE_BYTESTb4b4b4:
Tff7b72raise Tf85149ValueErrorTb4b4b4(Ta5d6ff"Ta5d6ffbundled wasm module too largeTa5d6ff"Tb4b4b4)
Tff7b72return Te6edf3out


Tff7b72def Td2a8ff_strip_bundle_metadata_sectionsTb4b4b4(Te6edf3dataTb4b4b4: Tffa657bytesTb4b4b4) Tff7b72-Tff7b72> Tffa657bytesTb4b4b4:
Tff7b72if Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72< T79c0ff8 Tff7b72or Te6edf3dataTb4b4b4[Tb4b4b4:T79c0ff4Tb4b4b4] Tff7b72!= Te6edf3WASM_MAGICTb4b4b4:
Tff7b72return Te6edf3data
Te6edf3metadata_names Tff7b72= Tb4b4b4{Te6edf3SECTION_PLUGINTb4b4b4, Te6edf3SECTION_FILESTb4b4b4, Te6edf3SECTION_SIGNATURETb4b4b4}
Te6edf3out Tff7b72= Tffa657bytearrayTb4b4b4(Te6edf3dataTb4b4b4[Tb4b4b4:T79c0ff8Tb4b4b4]Tb4b4b4)
Te6edf3offset Tff7b72= T79c0ff8
Tff7b72while Te6edf3offset Tff7b72< Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4:
Te6edf3section_start Tff7b72= Te6edf3offset
Te6edf3section_id Tff7b72= Te6edf3dataTb4b4b4[Te6edf3offsetTb4b4b4]
Te6edf3offset Tff7b72+Tff7b72= T79c0ff1
Te6edf3sizeTb4b4b4, Te6edf3n Tff7b72= Te6edf3read_uleb32Tb4b4b4(Te6edf3dataTb4b4b4[Te6edf3offsetTb4b4b4:Tb4b4b4]Tb4b4b4)
Te6edf3offset Tff7b72+Tff7b72= Te6edf3n
Tff7b72if Te6edf3size Tff7b72> Tffa657lenTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72- Te6edf3offsetTb4b4b4:
Tff7b72break
Te6edf3payload Tff7b72= Te6edf3dataTb4b4b4[Te6edf3offset Tb4b4b4: Te6edf3offset Tff7b72+ Te6edf3sizeTb4b4b4]
Te6edf3offset Tff7b72+Tff7b72= Te6edf3size
Tff7b72if Te6edf3section_id Tff7b72!= Te6edf3WASM_SECTION_CUSTOMTb4b4b4:
Te6edf3outTff7b72.Td2a8ffextendTb4b4b4(Te6edf3dataTb4b4b4[Te6edf3section_startTb4b4b4:Te6edf3offsetTb4b4b4]Tb4b4b4)
Tff7b72continue
Tff7b72tryTb4b4b4:
Te6edf3name_bytesTb4b4b4, Te6edf3_rest Tff7b72= Te6edf3read_byte_vectorTb4b4b4(Te6edf3payloadTb4b4b4)
Te6edf3name Tff7b72= Te6edf3name_bytesTff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4, Te6edf3errorsTff7b72=Ta5d6ff"Ta5d6ffreplaceTa5d6ff"Tb4b4b4)
Tff7b72except Tf85149ValueErrorTb4b4b4:
Te6edf3outTff7b72.Td2a8ffextendTb4b4b4(Te6edf3dataTb4b4b4[Te6edf3section_startTb4b4b4:Te6edf3offsetTb4b4b4]Tb4b4b4)
Tff7b72continue
Tff7b72if Te6edf3name Tff7b72in Te6edf3metadata_namesTb4b4b4:
Tff7b72continue
Te6edf3outTff7b72.Td2a8ffextendTb4b4b4(Te6edf3dataTb4b4b4[Te6edf3section_startTb4b4b4:Te6edf3offsetTb4b4b4]Tb4b4b4)
Tff7b72return Tffa657bytesTb4b4b4(Te6edf3outTb4b4b4)


Tff7b72def Td2a8ffwrite_wasm_bundleTb4b4b4(Te6edf3destTb4b4b4: Tffa657strTb4b4b4, Te6edf3bundleTb4b4b4: Te6edf3WasmBundleTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3osTff7b72.Td2a8ffmakedirsTb4b4b4(Te6edf3destTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72with Tffa657openTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3destTb4b4b4, Ta5d6ff"Ta5d6ffplugin.jsonTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4) Tff7b72as Te6edf3handleTb4b4b4:
Te6edf3jsonTff7b72.Td2a8ffdumpTb4b4b4(Te6edf3bundleTff7b72.Td2a8ffmanifestTb4b4b4, Te6edf3handleTb4b4b4, Te6edf3indentTff7b72=T79c0ff2Tb4b4b4)
Te6edf3handleTff7b72.Td2a8ffwriteTb4b4b4(Ta5d6ff"Tffea00\nTa5d6ff"Tb4b4b4)
Te6edf3backend Tff7b72= Te6edf3bundleTff7b72.Td2a8ffmanifestTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffbackendTa5d6ff"Tb4b4b4) Tff7b72or Tb4b4b4{Tb4b4b4}
Te6edf3backend_entry Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3backendTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3backend_entry Tff7b72= Tffa657strTb4b4b4(Te6edf3backendTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffentryTa5d6ff"Tb4b4b4) Tff7b72or Ta5d6ff"Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3backend_entryTb4b4b4:
Te6edf3backend_entry Tff7b72= Ta5d6ff"Ta5d6ffbackend/plugin.wasmTa5d6ff"
Te6edf3backend_path Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3destTb4b4b4, Te6edf3backend_entryTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffmakedirsTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Te6edf3backend_pathTb4b4b4) Tff7b72or Te6edf3destTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3runtime_wasm Tff7b72= Te6edf3_strip_bundle_metadata_sectionsTb4b4b4(
Te6edf3wasm_payload_without_signatureTb4b4b4(Te6edf3bundleTff7b72.Td2a8ffwasm_binaryTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72with Tffa657openTb4b4b4(Te6edf3backend_pathTb4b4b4, Ta5d6ff"Ta5d6ffwbTa5d6ff"Tb4b4b4) Tff7b72as Te6edf3handleTb4b4b4:
Te6edf3handleTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3runtime_wasmTb4b4b4)
Tff7b72for Te6edf3nameTb4b4b4, Te6edf3content Tff7b72in Te6edf3bundleTff7b72.Td2a8fffilesTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3nameTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4) Tff7b72== Te6edf3backend_entryTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72continue
Te6edf3validate_embedded_pathTb4b4b4(Te6edf3nameTb4b4b4)
Te6edf3file_path Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3destTb4b4b4, Te6edf3nameTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3osTff7b72.Td2a8ffmakedirsTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Te6edf3file_pathTb4b4b4) Tff7b72or Te6edf3destTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72with Tffa657openTb4b4b4(Te6edf3file_pathTb4b4b4, Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4, Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4) Tff7b72as Te6edf3handleTb4b4b4:
Te6edf3handleTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3contentTb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────